<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Struct template is_mpi_datatype</title>
<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
<link rel="up" href="../mpi/reference.html#doxygen.datatype_8hpp" title="Header &lt;boost/mpi/datatype.hpp&gt;">
<link rel="prev" href="structboost_1_1mpi_1_1is__mpi__complex__datatype.html" title="Struct template is_mpi_complex_datatype">
<link rel="next" href="structboost_1_1mpi_1_1is__mpi__floating__point__datatype.html" title="Struct template is_mpi_floating_point_datatype">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
<td align="center"><a href="../../../index.html">Home</a></td>
<td align="center"><a href="../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="structboost_1_1mpi_1_1is__mpi__complex__datatype.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../mpi/reference.html#doxygen.datatype_8hpp"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="structboost_1_1mpi_1_1is__mpi__floating__point__datatype.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="refentry">
<a name="doxygen.structboost_1_1mpi_1_1is__mpi__datatype"></a><div class="titlepage"></div>
<div class="refnamediv">
<h2><span class="refentrytitle">Struct template is_mpi_datatype</span></h2>
<p>boost::mpi::is_mpi_datatype — Type trait that determines if a C++ type can be mapped to an MPI data type. </p>
</div>
<h2 class="refsynopsisdiv-title">Synopsis</h2>
<div class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../mpi/reference.html#doxygen.datatype_8hpp" title="Header &lt;boost/mpi/datatype.hpp&gt;">boost/mpi/datatype.hpp</a>&gt;

</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> 
<span class="keyword">struct</span> <a class="link" href="structboost_1_1mpi_1_1is__mpi__datatype.html" title="Struct template is_mpi_datatype">is_mpi_datatype</a> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpi</span><span class="special">::</span><span class="identifier">is_mpi_builtin_datatype</span><span class="special">&lt;</span> <span class="identifier">T</span> <span class="special">&gt;</span> <span class="special">{</span>
<span class="special">}</span><span class="special">;</span></pre></div>
<div class="refsect1">
<a name="id-1.3.24.7.9.8.4"></a><h2>Description</h2>
<p>This type trait determines if it is possible to build an MPI data type that represents a C++ data type. When this is the case, <code class="computeroutput"><a class="link" href="structboost_1_1mpi_1_1is__mpi__datatype.html" title="Struct template is_mpi_datatype">is_mpi_datatype</a></code> derives <code class="computeroutput">mpl::true_</code> and the MPI data type will be accessible via <code class="computeroutput">get_mpi_datatype</code>.</p>
<p>For any C++ type that maps to a built-in MPI data type (see <code class="computeroutput"><a class="link" href="structboost_1_1mpi_1_1is__mpi__builtin__datatype.html" title="Struct template is_mpi_builtin_datatype">is_mpi_builtin_datatype</a></code>), <code class="computeroutput"><a class="link" href="structboost_1_1mpi_1_1is__mpi__datatype.html" title="Struct template is_mpi_datatype">is_mpi_datatype</a></code> is trivially true. However, any POD ("Plain Old Data") type containing types that themselves can be represented by MPI data types can itself be represented as an MPI data type. For instance, a <code class="computeroutput">point3d</code> class containing three <code class="computeroutput">double</code> values can be represented as an MPI data type. To do so, first make the data type Serializable (using the Boost.Serialization library); then, specialize the <code class="computeroutput"><a class="link" href="structboost_1_1mpi_1_1is__mpi__datatype.html" title="Struct template is_mpi_datatype">is_mpi_datatype</a></code> trait for the point type so that it will derive <code class="computeroutput">mpl::true_:</code> </p>
<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">mpi</span> <span class="special">{</span>
  <span class="keyword">template</span><span class="special">&lt;</span><span class="special">&gt;</span> <span class="keyword">struct</span> <span class="identifier">is_mpi_datatype</span><span class="special">&lt;</span><span class="identifier">point</span><span class="special">&gt;</span>
    <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span> <span class="special">{</span> <span class="special">}</span><span class="special">;</span>
<span class="special">}</span> <span class="special">}</span>
</pre>
<p> </p>
</div>
</div>
<div class="copyright-footer">Copyright © 2005-2007 Douglas Gregor,
      Matthias Troyer, Trustees of Indiana University<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at &lt;ulink url="http://www.boost.org/LICENSE_1_0.txt"&gt;
        http://www.boost.org/LICENSE_1_0.txt &lt;/ulink&gt;)
      </p>
</div>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="structboost_1_1mpi_1_1is__mpi__complex__datatype.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../mpi/reference.html#doxygen.datatype_8hpp"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="structboost_1_1mpi_1_1is__mpi__floating__point__datatype.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
